home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Report Writers / Crystal Repot 9.0 Full CD version / Setup.exe / ProgramF / CRYSTAL / CRW9 / DEV / INCLUDE / CRSMAPI.H < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-29  |  11.2 KB  |  317 lines

  1. /*
  2.  *  m a p i . h
  3.  *    
  4.  *  Messaging Applications Programming Interface.
  5.  *    
  6.  *  Copyright (c) 1992, Microsoft Corporation.  All rights reserved.
  7.  *    
  8.  *  Purpose:
  9.  *    This file defines the structures and constants used by
  10.  *    that subset of the messaging applications programming
  11.  *    interface which will be supported under Windows by
  12.  *    Microsoft Mail for PC Networks vesion 3.0.
  13.  */
  14.  
  15.  
  16.  
  17. /*
  18.  *  Types.
  19.  */
  20.  
  21.  
  22. typedef unsigned long       ULONG;
  23. typedef unsigned long FAR * LPULONG;
  24. typedef unsigned long       FLAGS;
  25. typedef unsigned long        LHANDLE, FAR *LPLHANDLE;
  26. #define    lhSessionNull    ((LHANDLE)0)
  27.  
  28. typedef struct MapiFileDescA
  29.   {
  30.     ULONG ulReserved;       // Reserved for future use (must be 0)
  31.     ULONG flFlags;            // Flags
  32.     ULONG nPosition;        // character in text to be replaced by attachment
  33.     char* lpszPathName;     // Full path name of attachment file
  34.     char* lpszFileName;     // Original file name (optional)
  35.     LPVOID lpFileType;      // Attachment file type (optional)
  36.  
  37. #if defined (__cplusplus)
  38. public:
  39.     MapiFileDescA()
  40.     {
  41.         lpszPathName = NULL;
  42.         lpszFileName = NULL;
  43.         lpFileType = NULL;
  44.     };
  45. #endif
  46.  
  47.   }MapiFileDescA, FAR * lpMapiFileDescA;
  48.  
  49. typedef struct MapiFileDescW
  50.   {
  51.     ULONG ulReserved;       // Reserved for future use (must be 0)
  52.     ULONG flFlags;            // Flags
  53.     ULONG nPosition;        // character in text to be replaced by attachment
  54.     wchar_t* lpszPathName;  // Full path name of attachment file
  55.     wchar_t* lpszFileName;  // Original file name (optional)
  56.     LPVOID lpFileType;      // Attachment file type (optional)
  57.  
  58. #if defined (__cplusplus)
  59. public:
  60.     MapiFileDescW()
  61.     {
  62.         lpszPathName = NULL;
  63.         lpszFileName = NULL;
  64.         lpFileType = NULL;
  65.     };
  66. #endif
  67.         
  68.   }MapiFileDescW, FAR * lpMapiFileDescW;
  69.  
  70. #ifdef UNICODE
  71. typedef MapiFileDescW MapiFileDesc;
  72. typedef lpMapiFileDescW lpMapiFileDesc;
  73. #else
  74. typedef MapiFileDescA MapiFileDesc;
  75. typedef lpMapiFileDescA lpMapiFileDesc;
  76. #endif  //UNICODE 
  77.  
  78. #define    MAPI_OLE                        0x00000001
  79. #define    MAPI_OLE_STATIC                    0x00000002
  80.  
  81.  
  82.  
  83.  
  84. typedef struct MapiRecipDescA
  85.   {
  86.     ULONG ulReserved;           // Reserved for future use
  87.     ULONG ulRecipClass;         // Recipient class
  88.                                 // MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG
  89.     char* lpszName;             // Recipient name
  90.     char* lpszAddress;          // Recipient address (optional)
  91.     ULONG ulEIDSize;            // Count in bytes of size of pEntryID
  92.     LPVOID lpEntryID;           // System-specific recipient reference
  93.  
  94. #if defined (__cplusplus)
  95. public:
  96.     MapiRecipDescA()
  97.     {
  98.         lpszName = NULL;
  99.         lpszAddress = NULL;
  100.         lpEntryID = NULL;
  101.     };
  102. #endif    
  103.  
  104.   }MapiRecipDescA, FAR * lpMapiRecipDescA;
  105.  
  106. typedef struct MapiRecipDescW
  107.   {
  108.     ULONG ulReserved;           // Reserved for future use
  109.     ULONG ulRecipClass;         // Recipient class
  110.                                 // MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG
  111.     wchar_t* lpszName;          // Recipient name
  112.     wchar_t* lpszAddress;       // Recipient address (optional)
  113.     ULONG ulEIDSize;            // Count in bytes of size of pEntryID
  114.     LPVOID lpEntryID;           // System-specific recipient reference
  115.  
  116. #if defined (__cplusplus)
  117. public:
  118.     MapiRecipDescW()
  119.     {
  120.         lpszName = NULL;
  121.         lpszAddress = NULL;
  122.         lpEntryID = NULL;
  123.     };
  124. #endif 
  125.  
  126.   }MapiRecipDescW, FAR * lpMapiRecipDescW;
  127.  
  128. #ifdef UNICODE
  129. typedef MapiRecipDescW MapiRecipDesc;
  130. typedef lpMapiRecipDescW lpMapiRecipDesc;
  131. #else
  132. typedef MapiRecipDescA MapiRecipDesc;
  133. typedef lpMapiRecipDescA lpMapiRecipDesc;
  134. #endif  //UNICODE 
  135.  
  136. #define MAPI_ORIG   0           // Recipient is message originator
  137. #define MAPI_TO     1           // Recipient is a primary recipient
  138. #define MAPI_CC     2           // Recipient is a copy recipient
  139. #define MAPI_BCC    3           // Recipient is blind copy recipient
  140.  
  141.  
  142.  
  143. typedef struct MapiMessageA
  144.   {
  145.     ULONG ulReserved;                   // Reserved for future use (M.B. 0)
  146.     char* lpszSubject;                  // Message Subject
  147.     char* lpszNoteText;                 // Message Text
  148.     char* lpszMessageType;              // Message Class
  149.     char* lpszDateReceived;             // in YYYY/MM/DD HH:MM format   
  150.     char* lpszConversationID;            // conversation thread ID
  151.     FLAGS flFlags;                      // unread,return receipt
  152.     lpMapiRecipDesc lpOriginator;       // Originator descriptor
  153.     ULONG nRecipCount;                  // Number of recipients
  154.     lpMapiRecipDesc lpRecips;           // Recipient descriptors
  155.     ULONG nFileCount;                   // # of file attachments
  156.     lpMapiFileDesc lpFiles;             // Attachment descriptors
  157.  
  158. #if defined (__cplusplus)
  159. public:
  160.     MapiMessageA()
  161.     {
  162.         lpszSubject = NULL;
  163.         lpszNoteText = NULL;
  164.         lpszMessageType = NULL;
  165.         lpszDateReceived = NULL;
  166.         lpszConversationID = NULL;
  167.         lpOriginator = NULL;
  168.         lpRecips = NULL;
  169.         lpFiles = NULL;
  170.     };
  171. #endif 
  172.  
  173.   }MapiMessageA, FAR * lpMapiMessageA;
  174.  
  175. typedef struct MapiMessageW
  176.   {
  177.     ULONG ulReserved;                   // Reserved for future use (M.B. 0)
  178.     wchar_t* lpszSubject;               // Message Subject
  179.     wchar_t* lpszNoteText;              // Message Text
  180.     wchar_t* lpszMessageType;           // Message Class
  181.     wchar_t* lpszDateReceived;          // in YYYY/MM/DD HH:MM format   
  182.     wchar_t* lpszConversationID;        // conversation thread ID
  183.     FLAGS flFlags;                      // unread,return receipt
  184.     lpMapiRecipDesc lpOriginator;       // Originator descriptor
  185.     ULONG nRecipCount;                  // Number of recipients
  186.     lpMapiRecipDesc lpRecips;           // Recipient descriptors
  187.     ULONG nFileCount;                   // # of file attachments
  188.     lpMapiFileDesc lpFiles;             // Attachment descriptors
  189.  
  190. #if defined (__cplusplus)
  191. public:
  192.     MapiMessageW()
  193.     {
  194.         lpszSubject = NULL;
  195.         lpszNoteText = NULL;
  196.         lpszMessageType = NULL;
  197.         lpszDateReceived = NULL;
  198.         lpszConversationID = NULL;
  199.         lpOriginator = NULL;
  200.         lpRecips = NULL;
  201.         lpFiles = NULL;
  202.     };
  203. #endif 
  204.  
  205.   }MapiMessageW, FAR * lpMapiMessageW;
  206.  
  207.  
  208. #ifdef UNICODE
  209. typedef MapiMessageW MapiMessage;
  210. typedef lpMapiMessageW lpMapiMessage;
  211. #else
  212. typedef MapiMessageA MapiMessage;
  213. typedef lpMapiMessageA lpMapiMessage;
  214. #endif  //UNICODE 
  215.  
  216. #define MAPI_UNREAD             0x00000001
  217. #define MAPI_RECEIPT_REQUESTED  0x00000002
  218. #define MAPI_SENT               0x00000004
  219.  
  220.  
  221.  
  222. /*
  223.  *  Entry points.
  224.  */
  225.  
  226.  
  227.  
  228. #define MAPI_LOGON_UI                   0x00000001  // Display logon UI
  229. #define MAPI_NEW_SESSION                0x00000002  // Do not use default.
  230. #define MAPI_DIALOG                     0x00000008  // Display a send note UI
  231. #define MAPI_UNREAD_ONLY                0x00000020  // Only unread messages
  232. #define MAPI_ENVELOPE_ONLY              0x00000040  // Only header information
  233. #define MAPI_PEEK                       0x00000080  // Do not mark as read.
  234. #define MAPI_GUARANTEE_FIFO                0x00000100    // use date order
  235. #define    MAPI_BODY_AS_FILE                0x00000200
  236. #define MAPI_AB_NOMODIFY                0x00000400    // Don't allow mods of AB entries
  237. #define    MAPI_SUPPRESS_ATTACH            0x00000800    // header + body, no files
  238. #define    MAPI_FORCE_DOWNLOAD                0x00001000    // force download of new mail during MAPILogon
  239.  
  240. ULONG FAR PASCAL MAPILogon(ULONG ulUIParam, LPTSTR lpszName, LPTSTR lpszPassword,
  241.                            FLAGS flFlags, ULONG ulReserved,
  242.                            LPLHANDLE lplhSession);
  243.  
  244. ULONG FAR PASCAL MAPILogoff(LHANDLE lhSession, ULONG ulUIParam, FLAGS flFlags,
  245.                             ULONG ulReserved);
  246.  
  247. ULONG FAR PASCAL MAPISendMail(LHANDLE lhSession, ULONG ulUIParam,
  248.                               lpMapiMessage lpMessage, FLAGS flFlags,
  249.                               ULONG ulReserved);
  250.  
  251. ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar,
  252.                                    LPTSTR lpszFilePaths, LPTSTR lpszFileNames,
  253.                                    ULONG ulReserved);
  254.  
  255. ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam,
  256.                               LPTSTR lpszMessageType, LPTSTR lpszSeedMessageID,
  257.                               FLAGS flFlags, ULONG ulReserved,
  258.                               LPTSTR lpszMessageID);
  259.  
  260. ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam,
  261.                               LPTSTR lpszMessageID, FLAGS flFlags,
  262.                               ULONG ulReserved, lpMapiMessage FAR *lppMessageOut);
  263.  
  264. ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam,
  265.                               lpMapiMessage pMessage, FLAGS flFlags,
  266.                               ULONG ulReserved, LPTSTR lpszMessageID);
  267.  
  268. ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam,
  269.                                 LPTSTR lpszMessageID, FLAGS flFlags,
  270.                                 ULONG ulReserved);
  271.  
  272. ULONG FAR PASCAL MAPIFreeBuffer( LPVOID pv );
  273.                             
  274. ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam,
  275.                     LPTSTR plszCaption, ULONG nEditFields,
  276.                     LPTSTR lpszLabels, ULONG nRecips,
  277.                     lpMapiRecipDesc lpRecips, FLAGS flFlags, ULONG ulReserved, 
  278.                     LPULONG lpnNewRecips, lpMapiRecipDesc FAR *lppNewRecips);
  279.  
  280. ULONG FAR PASCAL MAPIDetails(LHANDLE lhSession, ULONG ulUIParam,
  281.                     lpMapiRecipDesc lpRecip, FLAGS flFlags, ULONG ulReserved);
  282.  
  283. ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam,
  284.                         LPTSTR lpszName, FLAGS flFlags,
  285.                         ULONG ulReserved, lpMapiRecipDesc FAR *lppRecip);
  286.  
  287.  
  288.  
  289. #define SUCCESS_SUCCESS                     0
  290. #define MAPI_USER_ABORT                     1
  291. #define MAPI_E_FAILURE                      2
  292. #define MAPI_E_LOGIN_FAILURE                3
  293. #define MAPI_E_DISK_FULL                    4
  294. #define MAPI_E_INSUFFICIENT_MEMORY          5
  295. #define MAPI_E_ACCESS_DENIED                6
  296. #define MAPI_E_TOO_MANY_SESSIONS            8
  297. #define MAPI_E_TOO_MANY_FILES               9
  298. #define MAPI_E_TOO_MANY_RECIPIENTS          10
  299. #define MAPI_E_ATTACHMENT_NOT_FOUND         11
  300. #define MAPI_E_ATTACHMENT_OPEN_FAILURE      12
  301. #define MAPI_E_ATTACHMENT_WRITE_FAILURE     13
  302. #define MAPI_E_UNKNOWN_RECIPIENT            14
  303. #define MAPI_E_BAD_RECIPTYPE                15
  304. #define MAPI_E_NO_MESSAGES                  16
  305. #define MAPI_E_INVALID_MESSAGE              17
  306. #define MAPI_E_TEXT_TOO_LARGE               18
  307. #define    MAPI_E_INVALID_SESSION                19
  308. #define    MAPI_E_TYPE_NOT_SUPPORTED            20
  309. #define    MAPI_E_AMBIGUOUS_RECIPIENT            21
  310. #define MAPI_E_MESSAGE_IN_USE                22
  311. #define MAPI_E_NETWORK_FAILURE                23
  312. #define    MAPI_E_INVALID_EDITFIELDS            24
  313. #define    MAPI_E_INVALID_RECIPS                25
  314. #define    MAPI_E_NOT_SUPPORTED                26
  315.  
  316.  
  317.